Today, the industry is striving to provide advancements in the field of graphical user interface programming. As the use of rapid prototyping and development of visual and interactive software components such as Gantt charts, maps, statistical views, and other sophisticated visual displays becomes more pervasive, there is a growing need to simplify the way a complex application data model is interfaced to such sophisticated user interface components that display the model.
As is well known, interfacing a complex application model with a user interface component requires the creation of a model adapter. Such model adapter has become a major piece of development as both the complexities of applications and user interfaces have increased.
On the other hand, it is commonly agreed that the time to implement a graphical user interface for a given application takes roughly half of the total software development time. To reduce this time, visualization toolkits and components provide ready-made visualizations that can be instantiated and connected to a matching data model. Yet, for many sophisticated user interface components, creating the data model to provide to the user-interaction part of the component is often complex. This means that complex model adapters have to be developed to allow specific applications to take advantage of the advanced features offered by the user interface component.
Many concerns have been raised in relation with the model adapters. One such concern stems from the fact that each application data model is unique so that these model adapters are hardly reusable from an application to another and fairly difficult to maintain. In particular, these adapters are tightly coupled to both the application and the user interface, introducing a point of contention when either part needs to evolve.
In the example of a user interface component of the type Gantt chart, the data model elements of the graphical component are “task” objects. Each task object has a time, duration, possibly labels or various constraints attached to these objects. Generally, on the backend side of the application, there is a complex scheduling application which integrates many constraints, and sophisticated activity descriptions composed of individual tasks and additional data. When such Gantt Chart is used in some optimization systems such as scheduling systems, it may occur that the data model used for optimization do not always match the data model to be provided to the user interface component. Also, some optimization tools used to create scheduling applications, such as IBM ILOG CPO, need to provide ready-to-use user interface components that are easily adaptable by the end-user, with limited User Interface configuration.
Many existing solutions address the problem of adapting application data models to a service (such as storage, user interface, validation . . . ). One approach used to create user interfaces provide some data binding features which enable declaratively specifying model adapters. For instance, the Dojo Data Binding module (http://dojotoolkit.org/api/dojox/wire.html) provides mechanisms to bind an application data model to its interface. This module requires binding each single attribute that is to be mapped, and also to provide conversion steps in case the match is not direct. While providing a degree of relaxation between the interface and the application, constructing such model adapters can be extremely tedious, and those models are difficult to maintain, as any change in either the interface or the application requires updating the adapter.
Other solutions are provided in the field of model-driven engineering (MDE). Model-driven engineering provides the development of interactive tools and languages to allow mapping complex source data models to target data models with a wide flexibility. Model-driven engineering systems rely on declarative languages for mapping a model to another one, in all generality and with some guarantees of preservation of the semantics of the source model. Example of such MDE systems are described in the article entitled “First experiments with the ATL model transformation language: Transforming XSLT into XQuery”, OOPSLA 2003 Workshop, Anaheim, Calif. 2003, by Bézivin, J, Dupé, G, Jouault, F, Pitette, G, and Rougui, J E, and also in the article entitled “Integrating dynamic views using model driven development”, in Proceedings of the 2006 Conference of the Center For Advanced Studies on Collaborative Research (Toronto, Ontario, Canada, Oct. 16-19, 2006), CASCON '06. ACM Press, New York, N.Y., 17, By Bull, R. I. Such MDE approach relates to generality of purpose and only focus on preserving a strong semantics. Further, MDE tools are not meant to allow the model adaptation to be fully automatic, at the cost of possible errors, mismatches or discarded data.
Another model adaptation solution known as the “Perfect JPattern” component provides partial name or type matching between the source and the target. This solution allows fixing slight differences between sources and targets without a particular developer intervention. However, this component is not adapted for use in an interactive context. It further requires that the user of the component explicitly activates specific matching capabilities to benefit from this adaptability. In the event the component does not find a suitable model, no supplementary efforts will be made to provide a working match and the component will simply signal an error and stop operating.
In another approach described in U.S. Pat. No. 7,444,330, a model matching solution is provided to match a source model to a target model based on tree matching algorithm. In the approach of U.S. Pat. No. 7,444,330, it is required to obtain a full matching between the source model and the target model. If the match is detected to contain errors, the match is required to be corrected, and this correction phase involves prompting the user to manually provide inputs. Further, if the model adapter fails to find a satisfying match, the user interface component also returns message error and stop operating.